package com.ziyucoding.springboot.labs.lab4.concurrentdemo.example.singleton;

import com.ziyucoding.springboot.labs.lab4.concurrentdemo.annoations.NotThreadSafe;

/**
 * 单例模式
 * 懒汉模式：单例实例在第一次使用时进行创建
 *
 * @author ziyucoding
 * @date 2022-10-26
 **/
@NotThreadSafe
public class SingletonExample1 {

    /**
     * 单例
     */
    private static SingletonExample1 instance = null;

    /**
     * 私有构造函数
     *
     * @return null
     **/
    private SingletonExample1() {

    }

    /**
     * 静态工厂方法-获取实例
     *
     * @return SingletonExample1
     **/
    public static SingletonExample1 getInstance() {
        if (null == instance) {
            // 线程不安全，在多线程下，JVM可能会发生指令重排
            instance = new SingletonExample1();
        }
        return instance;
    }
}
